home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / GameKit / Examples / PacMan / FruitView.m < prev    next >
Text File  |  1995-06-12  |  2KB  |  65 lines

  1.  
  2. #import "FruitView.h"
  3. //#import <dpsclient/psops.h>    // PSxxx functions
  4.  
  5. int fruits[FRUIT_LEVELS + 1] =
  6.     { 19, 5, 6, 8, 8, 9, 7, 7, 15, 15, 17, 17, 16, 16, 16, 16, 18 };
  7.  
  8.  
  9. @implementation FruitView
  10.  
  11. - initFrame:(const NXRect *)frm        // initialize instance
  12. {
  13.     [super initFrame:frm];
  14.     lastLevel = 0;
  15.     fruit = [NXImage findImageNamed:"FruitBig.tiff"];
  16.     return self;
  17. }
  18.  
  19. - drawSelf:(NXRect *)rects :(int)rectCount  // standard rendering method
  20. {    // This is a hacked up mess.  Basically, it draw a horizontal line of
  21.     // fruits.  It starts at the left of the view and goes to the right.
  22.     // If you're level is higher than the width of the view would allow
  23.     // then we start on the left with a higher level of fruit so that the
  24.     // fruits will appear to scroll left as the level increases.
  25.     int j, jj, k, f;
  26.     NXRect from;
  27.     NXPoint pos;
  28.     
  29.     [self lockFocus];
  30.     PSsetgray(0.666);
  31.     NXRectFill(&bounds);
  32.     pos.y = 0; f = 0;
  33.     jj = bounds.size.width / (FRUIT_SIZE * 2) - 1;
  34.     j = lastLevel - jj;
  35.     if (j<1) j = 1;
  36.     for (k=0; k<=jj; k++) {
  37.         f = k + j;
  38.         if (f > lastLevel) f = 0;
  39.         if (f > FRUIT_LEVELS) f = FRUIT_LEVELS;
  40.         f = fruits[f];
  41.         NXSetRect(&from,
  42.             (f % FRUIT_PER_ROW) * (FRUIT_SIZE * 2),
  43.             (f / FRUIT_PER_ROW) * (FRUIT_SIZE * 2),
  44.             (FRUIT_SIZE * 2), (FRUIT_SIZE * 2));
  45.         pos.x = k * (FRUIT_SIZE * 2);
  46.  
  47.         [fruit composite:NX_SOVER fromRect:&from toPoint:&pos];
  48.     }
  49.     
  50.     [self unlockFocus];
  51.     NXPing();
  52.     return self;
  53. }
  54.  
  55. - showLevel:(int)num                // draw all fruits up to level
  56. {
  57.     if (lastLevel == num) return self;
  58.     lastLevel = num;
  59.     [self update];
  60.     return self;
  61. }
  62.  
  63.  
  64. @end
  65.